﻿using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using WalkingTec.Mvvm.Core;

namespace HengTong.Model.Db.Hr;

/// <summary>
/// 员工社保方案
/// </summary>
[Display(Name = "员工社保方案", Description = "员工社保缴纳方案配置", GroupName = "人力资源")]
public class SysPersonSocialSecurityScheme : BasePoco
{
    [Required]
    [Display(Name = "方案名称", Description = "社保方案名称（如：一类、二类）", GroupName = "基本信息")]
    [StringLength(64)]
    public string SchemeName { get; set; }

    [Display(Name = "方案编码", Description = "社保方案编码", GroupName = "基本信息")]
    [StringLength(64)]
    public string SchemeCode { get; set; }

    [Display(Name = "缴纳地区", Description = "社保缴纳所在地区", GroupName = "基本信息")]
    [StringLength(128)]
    public string PaymentArea { get; set; }

    [Display(Name = "是否启用", Description = "是否启用该方案", GroupName = "基本信息")]
    public bool IsEnabled { get; set; } = true;

    [Display(Name = "社保缴费基数", Description = "社保缴费基数", GroupName = "缴费信息")]
    [Column(TypeName = "decimal(18,2)")]
    public decimal? SocialSecurityBase { get; set; }

    [Display(Name = "养老保险个人", Description = "养老保险个人缴费", GroupName = "缴费明细")]
    [Column(TypeName = "decimal(18,2)")]
    public decimal? PensionPersonal { get; set; }

    [Display(Name = "养老保险单位", Description = "养老保险单位缴费", GroupName = "缴费明细")]
    [Column(TypeName = "decimal(18,2)")]
    public decimal? PensionCompany { get; set; }

    [Display(Name = "医疗保险个人", Description = "医疗保险个人缴费", GroupName = "缴费明细")]
    [Column(TypeName = "decimal(18,2)")]
    public decimal? MedicalPersonal { get; set; }

    [Display(Name = "医疗保险单位", Description = "医疗保险单位缴费", GroupName = "缴费明细")]
    [Column(TypeName = "decimal(18,2)")]
    public decimal? MedicalCompany { get; set; }

    [Display(Name = "失业保险个人", Description = "失业保险个人缴费", GroupName = "缴费明细")]
    [Column(TypeName = "decimal(18,2)")]
    public decimal? UnemploymentPersonal { get; set; }

    [Display(Name = "失业保险单位", Description = "失业保险单位缴费", GroupName = "缴费明细")]
    [Column(TypeName = "decimal(18,2)")]
    public decimal? UnemploymentCompany { get; set; }

    [Display(Name = "工伤保险单位", Description = "工伤保险单位缴费", GroupName = "缴费明细")]
    [Column(TypeName = "decimal(18,2)")]
    public decimal? InjuryCompany { get; set; }

    [Display(Name = "生育保险单位", Description = "生育保险单位缴费", GroupName = "缴费明细")]
    [Column(TypeName = "decimal(18,2)")]
    public decimal? MaternityCompany { get; set; }

    [Display(Name = "公积金缴费基数", Description = "公积金缴费基数", GroupName = "缴费信息")]
    [Column(TypeName = "decimal(18,2)")]
    public decimal? HousingFundBase { get; set; }

    [Display(Name = "公积金个人", Description = "公积金个人缴费", GroupName = "缴费明细")]
    [Column(TypeName = "decimal(18,2)")]
    public decimal? HousingFundPersonal { get; set; }

    [Display(Name = "公积金单位", Description = "公积金单位缴费", GroupName = "缴费明细")]
    [Column(TypeName = "decimal(18,2)")]
    public decimal? HousingFundCompany { get; set; }

    [Display(Name = "个人合计", Description = "个人缴费合计", GroupName = "统计信息")]
    [Column(TypeName = "decimal(18,2)")]
    public decimal? PersonalTotal { get; set; }

    [Display(Name = "单位合计", Description = "单位缴费合计", GroupName = "统计信息")]
    [Column(TypeName = "decimal(18,2)")]
    public decimal? CompanyTotal { get; set; }

    [Display(Name = "备注", Description = "备注说明", GroupName = "其他")]
    [StringLength(500)]
    public string Remark { get; set; }
}